package in.rob.client.fragment; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import in.controller.adapter.ProfilePostAdapter; import in.controller.handler.PostStreamResponseHandler; import in.data.stream.PostStream; import in.lib.Constants; import in.lib.manager.APIManager; import in.lib.manager.ResponseManager; import in.lib.manager.UserManager; import in.lib.utils.Views.Injectable; import in.model.User; import in.rob.client.R; import in.rob.client.base.BaseActivity; import in.view.holder.ProfileHeaderHolder; import lombok.Getter; @Injectable public class ProfileFragment extends TimelineFragment { @Getter private User user; private ProfileHeaderHolder header; @Override public void setupAdapter() { setAdapter(new ProfilePostAdapter(getContext(), user.getId())); } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); if (getUser() != null) { header.populate(getUser()); ((BaseActivity)getActivity()).getPageAdapter().setTitle(ProfileFragment.class, "@" + user.getUsername()); } } @Override public void onSaveInstanceState(Bundle outState) { if (user != null) { outState.putParcelable(Constants.EXTRA_USER, user); } super.onSaveInstanceState(outState); } @Override public void setupHeaders() { View headerView = LayoutInflater.from(getContext()).inflate(R.layout.profile_header_stub, getListView(), false); header = new ProfileHeaderHolder(headerView); getListView().addHeaderView(headerView, null, false); } @Override public void retrieveArguments(Bundle arguments) { super.retrieveArguments(arguments); if (arguments != null && arguments.containsKey(Constants.EXTRA_USER)) { user = (User)arguments.getParcelable(Constants.EXTRA_USER); } else { user = UserManager.getInstance().getUser(); } } @Override public void fetchStream(String lastId, boolean append) { PostStreamResponseHandler response = new PostStreamResponseHandler(append); ResponseManager.getInstance().addResponse(getResponseKeys()[0], response, this); APIManager.getInstance().getUserStream(getUser().getId(), lastId, response); } @Override public Class getCacheClass() { return PostStream.class; } @Override public String[] getResponseKeys() { return new String[] { String.format(Constants.RESPONSE_USER_STREAM, getUser().getId()) }; } @Override public String getCacheKey() { return String.format(Constants.CACHE_USER_STREAM, getUser().getId()); } }